package com.hj.monitor.domain.repository;

import com.hj.monitor.domain.model.entity.MonitorDataEntity;
import com.hj.monitor.domain.model.entity.MonitorDataMapEntity;
import com.hj.monitor.domain.model.entity.MonitorFlowDesignerEntity;
import com.hj.monitor.domain.model.valobj.GatherNodeExpressionVO;
import com.hj.monitor.domain.model.valobj.MonitorTreeConfigVO;

import java.util.List;

public interface IMonitorRepository {

    /**
     * 查询 gather 节点表达式 vo
     *
     * @param systemName 系统名称
     * @param className  类名
     * @param methodName 方法名称
     * @return list<gather node expression vo>
     */
    List<GatherNodeExpressionVO> queryGatherNodeExpressionVO(String systemName, String className, String methodName);

    /**
     * 按监视器 ID 查询监视器名称
     *
     * @param monitorId 监视器 ID
     * @return 字符串
     */
    String queryMonitoryNameByMonitoryId(String monitorId);


    /**
     * 保存监控数据
     *
     * @param monitorDataEntity 监视数据实体
     */
    void saveMonitoryData(MonitorDataEntity monitorDataEntity);

    /**
     * 查询监视器数据映射实体列表
     *
     * @return list<Monitor Data Map 实体>
     */
    List<MonitorDataMapEntity> queryMonitorDataMapEntityList();

    /**
     * Query Monitor 流数据查询
     *
     * @param monitorId 监视器 ID
     * @return 监控树配置 vo
     */
    MonitorTreeConfigVO queryMonitorFlowData(String monitorId);

    /**
     * 查询监控数据实体列表
     *
     * @param monitorDataEntity 监视数据实体
     * @return list<Monitor 数据实体>
     */
    List<MonitorDataEntity> queryMonitorDataEntityList(MonitorDataEntity monitorDataEntity);

    /**
     * 更新 Monitor 流设计器
     *
     * @param monitorFlowDesignerEntity 监视流设计器实体
     */
    void updateMonitorFlowDesigner(MonitorFlowDesignerEntity monitorFlowDesignerEntity);
}
